# 不懂科技就会落伍！每天进步一点点!
# 今天量子钛火力全开，升级Python字符串修改代码示例，实战技巧倾囊相授！
# 各种场景、各种技巧，一次性给你讲透彻！Let's dive deeper!，欢迎各位大神继续指正

# 首先，我们来深入探索字符串大小写转换的妙用：
# 场景一：统一用户输入，忽略大小写差异
user_input = "PyThOn Is Fun"
#  假设这是用户输入的字符串，大小写混杂。
normalized_input_upper = user_input.upper()
#  使用 upper() 方法将用户输入全部转换为大写。
print("统一大写:", normalized_input_upper)
#  打印 normalized_input_upper，输出 "PYTHON IS FUN"，全部变为大写。

normalized_input_lower = user_input.lower()
#  使用 lower() 方法将用户输入全部转换为小写。
print("统一下写:", normalized_input_lower)
#  打印 normalized_input_lower，输出 "python is fun"，全部变为小写。
#  无论用户输入什么大小写，我们都统一转换为大写或小写，方便后续处理，比如关键词匹配。

# 场景二：判断字符串是否以特定大小写前缀开头
file_name = "README.md"
#  假设我们有一个文件名。
if file_name.lower().startswith("readme"):
    #  先将文件名转换为小写，然后使用 startswith() 方法判断是否以 "readme" 开头。
    print(f"文件名 '{file_name}' 以 'readme' (忽略大小写) 开头")
else:
    print(f"文件名 '{file_name}' 不以 'readme' (忽略大小写) 开头")
#  通过先转换为小写，再进行判断，实现了忽略大小写的字符串前缀检查。

# 接下来，我们来详细看看去除空白字符的各种姿势：

# 场景三：清理用户输入数据，去除多余空白
messy_data = "        用户信息        " # 注意这里有多种空白字符，包括空格和制表符等
#  模拟一段包含多种空白字符的混乱数据。
cleaned_data = messy_data.strip()
#  使用 strip() 方法去除 messy_data 首尾的所有空白字符。
print("去除首尾空白:", cleaned_data)
#  打印 cleaned_data，输出 "用户信息"，首尾各种空白字符都被成功去除。

# 场景四：只去除字符串左侧或右侧的空白
text_with_left_space = "        Left Space Only"
#  一个字符串，只有左侧有空白。
left_stripped_text = text_with_left_space.lstrip()
#  使用 lstrip() 方法只去除字符串左侧的空白。
print("去除左侧空白:", left_stripped_text)
#  打印 left_stripped_text，输出 "Left Space Only"，左侧空白被去除。

text_with_right_space = "Right Space Only        "
#  一个字符串，只有右侧有空白。
right_stripped_text = text_with_right_space.rstrip()
#  使用 rstrip() 方法只去除字符串右侧的空白。
print("去除右侧空白:", right_stripped_text)
#  打印 right_stripped_text，输出 "Right Space Only"，右侧空白被去除。
#  lstrip() 和 rstrip() 方法可以更精细地控制空白字符的去除方向。

#  然后，我们深入学习字符串替换的各种技巧：
# 场景五：批量替换敏感词
comment = "这个评论包含一些敏感词汇，比如 badword 和 anotherBadWord，需要进行处理。"
#  模拟一段包含敏感词汇的评论文本。
censored_comment = comment.replace("badword", "**").replace("anotherBadWord", "**")
#  链式调用 replace() 方法，将 "badword" 和 "anotherBadWord" 替换为 "**"。
print("敏感词替换:", censored_comment)
#  打印 censored_comment，输出 "这个评论包含一些敏感词汇，比如 ** 和 **，需要进行处理。"，敏感词被替换。
#  replace() 方法可以链式调用，实现多个子字符串的批量替换。

# 场景六：根据分隔符，替换字符串中的特定部分
data_line = "name=John,age=30,city=New York"
#  模拟一行 CSV 格式的数据。
replaced_data = data_line.replace(",", ";").replace("=", ":")
#  将逗号 "," 替换为分号 ";"，将等号 "=" 替换为冒号 ":"。
print("替换分隔符:", replaced_data)
#  打印 replaced_data，输出 "name:John;age:30;city:New York"，分隔符被替换。
#  replace() 方法可以替换任意子字符串，包括分隔符。

#  最后，我们来探索字符串分割的更多应用场景：
# 场景七：解析 CSV 格式数据
csv_data = "姓名,年龄,城市\n张三,25,北京\n李四,30,上海"
#  模拟一段 CSV 格式的数据，包含表头和两行数据。
lines = csv_data.splitlines() # 使用 splitlines() 方法按行分割，更智能处理换行符
#  使用 splitlines() 方法按行分割 CSV 数据，得到一个包含各行数据的列表。
print("按行分割 CSV:", lines)
#  打印 lines，输出按行分割后的列表。

header = lines[0].split(",")
#  取列表的第一行 (表头)，使用 split(",") 方法按逗号分割，得到表头列表。
print("CSV 表头:", header)
#  打印 header，输出 CSV 表头列表。

data_rows = [line.split(",") for line in lines[1:]] # 列表推导式，处理数据行
#  使用列表推导式，遍历 lines 列表的第二行到最后一行 (数据行)，
#  对每一行使用 split(",") 方法按逗号分割，得到数据行列表。
print("CSV 数据行:", data_rows)
#  打印 data_rows，输出 CSV 数据行列表，每行数据都被分割成列表。
#  split() 方法在处理结构化文本数据时非常强大，可以方便地提取和解析数据。

# 场景八：统计单词出现次数 (简单版本)
sentence = "This is a sentence. This sentence is for demonstration."
#  模拟一个英文句子。
words = sentence.lower().strip(".").split() # 链式调用，先转小写，去句点，再分割
#  链式调用 lower(), strip("."), split() 方法，
#  先将句子转换为小写，然后去除句末的句点，最后按空格分割成单词列表。
word_counts = {}
#  创建一个空字典 word_counts，用于存储单词计数。
for word in words:
    #  遍历单词列表 words。
    word_counts[word] = word_counts.get(word, 0) + 1
    #  对于每个单词，如果它已经在 word_counts 字典中，则计数加 1，否则添加到字典并计数设为 1。
print("单词计数:", word_counts)
#  打印 word_counts，输出单词计数字典，例如 {'this': 2, 'is': 2, 'a': 1, 'sentence': 2, 'for': 1, 'demonstration': 1}。
#  split() 方法结合循环和字典，可以实现简单的单词统计功能。

# 总结一下，今天我们通过丰富的实战代码示例，深入学习了Python字符串修改的各种技巧：
#  - 大小写转换 (upper(), lower())：统一文本格式，忽略大小写差异。
#  - 去除空白字符 (strip(), lstrip(), rstrip())：清理用户输入，规范化数据。
#  - 字符串替换 (replace())：批量替换敏感词，修改分隔符，灵活处理文本内容。
#  - 字符串分割 (split(), splitlines())：解析 CSV 数据，统计单词频率，提取关键信息。

#  希望这些代码示例能让你对Python 字符串修改有更全面、更深入的理解，
#  并在实际编程中灵活运用这些技巧，写出更健壮、更高效的代码！

# 好啦，今天的字符串修改代码加量版就到此结束，是不是感觉技能值瞬间爆棚了呢？点赞关注不迷路，更多Python实战技巧，量子钛持续为你奉上！
print("好啦，今天的字符串修改代码加量版就到此结束，是不是感觉技能值瞬间爆棚了呢？点赞关注不迷路，更多Python实战技巧，量子钛持续为你奉上！")